












    SERVICIU WEB PENTRU SCHIMB DE DATE 
             R.A.R.-R.A.  Diverse institutii


















Proprietar :
Registrul Auto Romn R.A.
Data:
08.04.2024
Versiunea:
0.0.1
Departament:
D.T.I.C.
?ef Departament:
Manuel Farca?
?ef Dezvoltare:
Cristian Mardare
Analist Programator:
Razvan Chirculescu





Document control

Versiunea
Data
Observa?ii
0.0.1
08.04.2024
Start Proiect







Con?inut:


1. Introducere 	 Pag. 4
2. Mesaje definite si metode de acces 	 Pag. 4
3. Modele de date	Pag.10



1. Introducere

 General

n acest document sunt definite metodele expuse in vederea transmiterii de catre agentii economici autorizati a informatiilor necesare emiterii raportului RAR-Autopass conform Legii 142/2023 si OM 210/2024
 
 Scop

      Colecterea de informatiilor despre interventiile asupra anumitor sisteme ale vehiculelor precum si informatiile privind indicatia odometrului, cu ocazia prezentarii vehiculelor in unitati service autorizate RAR  

2. Mesaje definite si Metode de acces

2.1. Endpoint:  account-controller

a. Metoda addClient - Adaugare utilizator
- Adresa access: /rar-autopass/account/addClient	
- Tip apel: POST
- Tip access: Securizat
- Descriere: 
Agentul economic (rol ADMIN) poate crea utilizatori cu rol CLIENT, vor primi pe email un link de confirmare a adresei de e-mail si o parola initiala, iar contul va deveni activ doar dupa ce acestia vor accesa linkul. 
Linkul de activare al contului este valid 24 de ore. 
Daca nu se confirma in acest interval, atunci contul va trebui sa fie creat din nou.
- Payload: PostUtilizatoriDTO
- Response: ApiResponseMessage

b. Metoda changePass - Schimba parola unui utilizator
- Adresa access: /rar-autopass/account/changePass
- Tip apel: POST
- Tip access: Securizat
- Descriere: Se transmite un obiect compus din UserID, parola veche, parola noua, reconfirmare parola noua.
- Payload: RequestChangePassword
- Raspuns: String


c. Metoda getAllUsers - Lista de utilizatori in functie de rolul userului logat
- Adresa access: /rar-autopass/account/getAllUsers
- Tip apel: GET
- Tip access: Securizat
- Descriere: 
  Raspunde cu o lista de obiecte de tip USER in functie de rolul utilizatorului logat.
  Daca utilizatorul este ADMIN atunci lista va contine utilizatorii creati de client.
  
- Payload/Parametru: 
- Raspuns: CustomResponseForMapping



d. Metoda getRoles - Interogare lista roluri
- Adresa access: /rar-autopass/account/getRoles
- Tip apel: GET
- Tip access: Securizat
- Descriere: Intoarce un obiect de roluri de utilizator cu ID-urile corespunzatoare.
- Payload/Parametru: 
- Raspuns: GetUtilizatoriDTO

e. Metoda getUserById/{id} - Detalii utilizator
- Adresa access: /rar-autopass/account/getUserById/{id}
- Tip apel: GET
- Tip access: Securizat
- Descriere: Cere un parametru ID si raspunde cu un obiect de tip user.
- Payload/Parametru: id
- Raspuns: GetUtilizatoriDTO

f. Metoda inactivateUser/{id} - Dezactiveaza utilizator
- Adresa access: /rar-autopass/account/inactivateUser/{id}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere: 
Endpoint de tip PATCH, care primeste un parametru ID si seteaza utilizatorul ca inactiv.
Raspunde cu un obiect de tip {key:"raspuns", value:"descriere raspuns"}. 
Daca utilizatorul a fost inactivat cu success raspunsul va fi "USER_INACTIVE" ("Utilizatorul a fost dezactivat!"), iar cand nu, atunci utilizatorul nu exista: 
"USER_NOT_PRESENT" ("Utilizator inexistent!").
- Payload/Parametru: id
- Raspuns: ApiResponseMessage

g. Metoda patchUser/{userId} - Modificare utilizator
- Adresa access: /rar-autopass/account/patchUser/{userId}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere: 
Endpoint de tip PATCH pentru modificarea campurilor unui utilizator. Primeste un obiect de tip PostUtilizatorDTO si un parametru ID, 
si raspunde cu un obiect de tip {key:"raspuns", value:"descriere raspuns"}. 
Daca userul a fost modificat cu succes
raspunsul va fi "USER_UPDATED" ("Utilizatorul a fost actualizat!"),
iar cand nu, atunci utilizatorul nu exista: 
"USER_NOT_PRESENT" ("Utilizator inexistent!").
- Payload/Parametru: user
- Raspuns: ApiResponseMessage

h. Metoda reactivateUser/{id} - Reactiveaza utilizator
- Adresa access: /rar-autopass/account/reactivateUser/{id}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere: 
Endpoint de tip PATCH, care primeste un parametru ID si seteaza userul ca activ.
Raspunde cu un obiect de tip {key:"raspuns", value:"descriere raspuns"}. 
Daca userul a fost reactivat cu succes raspunsul va fi "USER_REACTIVATED" ("Utilizatorul a fost reactivat!"),
iar cand nu, atunci utilizatorul nu exista: 
"USER_NOT_PRESENT" ("Utilizator inexistent!").
- Payload/Parametru: id
- Raspuns: ApiResponseMessage

i. Metoda resetPassToDefault - Reseteaza parola unui utilizator
- Adresa access: /rar-autopass/account/resetPassToDefault/{id} - Reseteaza parola unui utilizator
- Tip apel: POST
- Tip access: Securizat
- Descriere: Endpoint de tip POST, care primeste ca parametru ID si trimite utilizatorului o noua parola pe emailul asociat.
- Payload/Parametru: id	
- Raspuns: GetUtilizatoriDTO
- 
j. Metoda  makeAdminClient/{id}
- Adresa access: /rar-autopass/account/makeAdminClient/{id}
- Tip apel: POST
- Tip access: Securizat
- Descriere: 
Endpoint de tip POST, care permite userului cu rol ADMIN sa aloce rol ADMIN_CLIENT conturilor cu rol de CLIENT deja existente. Primeste un parametru ID si schimba rolul userului din CLIENT in ADMIN_CLIENT.
Raspunde cu un obiect de tip {key:"raspuns", value:"descriere raspuns"}. 
Daca rolul este deja ADMIN_CLIENT raspunsul va fi USER_ALREADY_ADMIN(Userul are deja rol admin)
Daca rolul a fost schimbat cu succes raspunsul va fi "USER_ROLE_UPDATED" ("Rolul a fost modificat in ADMIN_CLIENT!"),
iar cand nu, atunci utilizatorul nu exista: 
"USER_UPDATE_FAILED" ("Eroare la actualizarea userului!").
- Payload/Parametru: id
- Raspuns: ApiResponseMessage




2.2. Endpoint:  nomenclator-controller

a. Metoda getNomenclatorPrestatii  Afiseaza lista prestatiilor
- Adresa access: /rar-autopass/nomenclator/getNomenclatorPrestatii
- Tip apel: GET
- Tip access: Securizat
- Descriere: Afiseaza lista prestatiilor.
- Payload/Parametri: ---
- Response: CustomResponseForMapping

b. Metoda getPrestatieByCodPrestatie  Afiseaza prestatie dupa cod
- Adresa access: 
/rar-autopass/nomenclator/getPrestatieByCodPrestatie/{cod}
- Tip apel: GET
- Tip access: Securizat
- Descriere: Afiseaza prestatie dupa cod.
- Payload/Parametri: cod
- Response: NomenclatorPrestatii





2.3. Endpoint:  prezentari-controller

a. Metoda getAllPrezentari  Afiseaza toate prezentarile active ale utilizatorului logat
- Adresa access: /rar-autopass/prezentari/getAllPrezentari
- Tip apel: GET
- Tip access: Securizat
- Descriere: Afiseaza toate prezentarile active ale utilizatorulului logat.
- Payload/Parametri: ---
- Response: CustomResponseForMapping

b. Metoda getPrezentare/{id}  Afiseaza prezentare dupa ID
- Adresa access: /rar-autopass/prezentari/getPrezentare/{id}
- Tip apel: GET
- Tip access: Securizat
- Descriere: Afiseaza prezentare dupa ID.
- Payload/Parametri: id
- Response: Prezentari

c. Metoda markPrezentareAnulataById/{id}  
   Marcheaza o prezentare ca ANULATA
- Adresa access: /rar-autopass/prezentari/getPrezentare/{id}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere: Marcheaza o prezentare ca ANULATA.
- Payload/Parametri: id
- Raspuns: ApiResponseMessage

d. Metoda patchPrezentare/{id}  
   Modifica fielduri pentru o prezentare deja existenta
- Adresa access: /rar-autopass/prezentari/patchPrezentare/{id}
- Tip apel: PATCH
- Tip access: Securizat
- Descriere: Marcheaza o prezentare ca ANULATA.
- Payload/Parametri: id
- Raspuns: PostPrezentareUpdateDTO

e. Metoda postPrezentare  Salveaza o noua prezentare
- Adresa access: /rar-autopass/prezentari/patchPrezentare/{id}
- Tip apel: POST
- Tip access: Securizat
- Descriere: Salveaza o noua prezentare.
- Payload: Prezentari
- Raspuns: CustomResponseForMapping








2.4. Endpoint:  public-controller

a. Metoda checkIfEmailExists  Verificare async daca email este deja existent
- Adresa access: /rar-autopass/public/checkIfEmailExists/{email}
- Tip apel: GET
- Tip access: Public
- Descriere: Verificare async daca email este deja existent.
- Payload/Parametri: email
- Raspuns: ApiResponseMessage

b. Metoda confirmationEmailAccount  Confirmare adresa de email
- Adresa access: /rar-autopass/public/checkIfEmailExists/{email}
- Tip apel: GET
- Tip access: Public
- Descriere: Confirmare adresa de email.
- Payload/Parametri: uuid
- Raspuns: ApiResponse

c. Metoda confirmationPassReset  
   Resetare parola cu token, parola noua si confirmare parola noua
- Adresa access: /rar-autopass/public/confirmationPassReset
- Tip apel: POST
- Tip access: Public
- Descriere: Resetare parola cu token, parola noua si confirmare parola noua.
- Payload/Parametri: requestForgotPassword
- Raspuns: ApiResponse


d. Metoda forgotPasswordLink/{email}  Parola uitata
- Adresa access: rar-autopass/public/forgotPasswordLink/{email}
- Tip apel: POST
- Tip access: Public
- Descriere: 
Endpoint pentru setarea unei noi parole in cazul in care parola actuala a fost uitata. Primeste parametru EMAIL si raspunde cu un link pe email pentru resetare.
- Payload/Parametri: email
- Raspuns: ApiResponseMessage

e. Metoda login  Endpoint pentru login
- Adresa access: /rar-autopass/public/login
- Tip apel: POST
- Tip access: Public
- Descriere: 
Primeste 2 parametri, email si password, genereaza token utilizatorului si autentifica login.
- Payload/Parametri: email, password
- Raspuns: GetUtilizatoriDTO

Nota: Pentru toate metodele cu tip acces securizat se va folosi metoda de autentificare de tip JWT Token. 
Tokenul de autentificare se obtine prin apel la metoda LOGIN din controller-ul public. Token-ul primit in raspuns trebuie atasat fiecarui request in HEADER AUTHORIZATION,in forma Bearer: {token}





























3. Models/Modele

(1) ApiResponseMessage{
   < * >:
string
}

ApiResponseMessage


(2) ApiResponse{
   description
string
   details
string
   status
stringEnum:
[INVALID_EMAIL, INVALID_TOKEN, NOT_OK, OK]
}


(3) CreateAgentEconomicDTO{
   codAtelier
string
   confirmPassword
string
   email
string
   key
string
   nume
string
   password
string
   prenume
string
}




(4) CustomResponseForMapping{
   data
{

}
   message
string
   statusCode
integer($int32)
}


(5) GetUtilizatoriDTO{
   activ
integer($int64)
   authorities
[GrantedAuthority{
authority
string
}]
   email
string
   idUser
integer($int64)
   nume
string
   prenume
string
   token
string
}



(6) GrantedAuthority{
   authority
string
}


(7) NomenclatorPrestatii{
   codPrestatie
string
   numePrestatie
string
}


(8) PostPrezentareUpdateDTO{
 b64Image
string
 nrInmatriculare
string
 obs
string
 odometruFinal
integer($int64)
 odometruInitial
integer($int64)
 prestatii
[PrestatiiPrezentare{
codPrestatie
string
idPrezentare
integer($int64)
}]
 sistemReparat
string
 status
stringEnum:
[ANULATA, FINALIZATA, SALVATA, UNDEFINED]


 vin
string
}


(9) PostUtilizatoriDTO{
   email
string
   nume
string
   prenume
string
}


(10) PrestatiiPrezentare{
   codPrestatie
string
   idPrezentare
integer($int64)
}


(11) Prezentari{
 b64Image
string




 dataPrestatie
string($date)
 id
integer($int64)
 idAgent
integer($int64)
 idUser
integer($int64)
 nrInmatriculare
string
 obs
string
 odometruFinal
integer($int64)
 odometruInitial
integer($int64)
 prestatii
[PrestatiiPrezentare{
codPrestatie
string
idPrezentare
integer($int64)
}]
 sistemReparat
string
 status
stringEnum:
[ANULATA, FINALIZATA, SALVATA, UNDEFINED]
 tipPrestatie
stringEnum:

 vin
string
}


(12) RequestChangePassword{
   confirmNewPass
string
   newPass
string
   oldPass
string
   userId
integer($int64)
}


(13) RequestForgotPassword{
   confirmNewPass
string
   newPass
string
   token
string
}


(14) Roluri{
   idRol
integer($int64)
   numeRol
string
}


Registrul Auto Romn R.A.                                                          Direc?ia General? Venituri Buget Local Sector 2

Protocol de colaborare

                          Specificare Mesaje JSON                                                     Versiunea 0.0.1



08.04.2024	 Registrul Auto Roman R.A.	Pag. 1

